package com.buss.core.service;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import com.buss.core.dic.MenuType;
import com.buss.core.model.Sysmenu;
import com.buss.core.persistence.Paginalbe;
import com.buss.core.persistence.ResultList;

public interface SysmenuService extends Serializable {
	/**
	 * 获取指定上层菜单编码的系统菜单信息
	 * @param parentId
	 * @return
	 */
	public ResultList<Sysmenu> querySysMenu(Long parentId,MenuType menuType,Boolean disabled);
	
	/**
	 * 根据角色获取该角色所有的权限信息
	 * @param roleId
	 * @param menuType
	 * @param disabled
	 * @return
	 */
	public Map<Long, String> queryRoleMenuToMap(Long[] roleId,Long parentId,MenuType menuType,Boolean disabled,Paginalbe page);
	
	public ResultList<Sysmenu> queryAllMenuenuByRole(Long[] roleId,Long parentId,MenuType menuType,Boolean disabled,Paginalbe page);
	/**
	 * 根据角色编码和菜单编码获取子菜单信息列表
	 * @param roleId	角色编码
	 * @param parentId	上层菜单编码
	 * @param menuType	菜单类型
	 * @param page		分页对象
	 * @return
	 */
	public ResultList<Sysmenu> querySysMenuByRole(Long[] roleId,Long parentId,MenuType menuType,Boolean disabled,Paginalbe page);
	
	/**
	 * 根据指定菜单ID获取所有上层菜单信息
	 * @param menuId
	 * @return
	 */
	public List<Sysmenu> querySysmenuByChild(Long menuId);
	
	/**
	 * 获取指定系统菜单信息
	 * @param code
	 * @return
	 */
	public Sysmenu loadSysMenu(Long id);
	
	/**
	 * 新增系统菜单信息
	 * @param sysMenu
	 */
	public void saveSysMenu(Sysmenu sysMenu);
	
	/**
	 * 保持系统菜单信息
	 * @param sysMenu
	 */
	public Sysmenu mergeSysMenu(Sysmenu sysMenu);
	
	/**
	 * 修改系统菜单信息
	 * @param sysMenu
	 */
	public void editSysMenu(Sysmenu sysMenu);
	
	/**
	 * 删除指定菜单信息
	 * @param code
	 */
	public void deleteMenu(Long[] ids);
}
